#include <stdio.h>
#include "lista.h"

int main()
	{
	  int ne,i,j,elec,v=0;
	  char t='n';

	  while (t!='s') /*ciclo para ejecutar el programa reiteradas veces.*/
	    {

	      v=0; 	      
	      lista array;

		printf("\n###################################################################");
     		printf("\n#************************* T * A * D *****************************#");
     		printf("\n#**************                                       ************#");
     		printf("\n#**************  1-Ingresar el arreglo a manualmente  ************#");
		printf("\n#**************  2-Ingresar el arreglo aleatoriamente ************#");
     		printf("\n#**************                                       ************#");
            printf("\n#*****************************************************************#");
        printf("\n###################################################################\n ---->   ");


        /*ingresa la opcion y verifica que sea correcta*/
        do{
            v=scanf("%i",&elec);
                if (elec<1 || elec>2 || v!=1){
                    printf("\n\a\a\a\aIngrese una opcion correcta: ");
                v=scanf("%i",&elec);
            }
    
        }while(v!=1);
    
        v=0;

        /*ingresa la longitud del arreglo y chequea que sea mayor que 0*/
        do{
        printf("Ingrese la longitud del arreglo: ");
        v=scanf("%i",&ne);
        if(v!=1 ||  ne<1){
            printf("\a\a\a\aDatos ingresados incorrectamente. Intente de nuevo");
            v=0;
        }
        else{
            v=1;
        }
    } while(v!=1);
        
    v=0;

		/*crea el array*/
		array = lista_create(ne);

		/*llena el array*/
		if (elec==1){
			lista_fillStdIn(array);
			}
		else if (elec==2){
			lista_fillRand(array);
			}

		/*muestra el array en la pantalla*/
		lista_showStdOut(array);

        while (v!=1)
          {
            printf("Ingrese los indice a intercambiar:\n");
            printf("Primer indice: ");
            scanf("%i",&i); 
            
            printf("\nSegundo indice: ");
            scanf("%i",&j);
            
            if (i>j || j<0 || i<0 || j>ne || i>ne)
              {
            printf("\a\a\a\aLos indices ingresados no son correctos. Ingreselos nuevamente\n");
            v=0;
              }
            else
              {v=1;}
          }



		/*muestra el array invertido*/  
        printf("El array ingresado anteriormente ha sido invertido en %i y %i.\n ",i,j);
		lista_swap(array,i,j);
		lista_showStdOut(array);

		/*muestra el reverse*/
        printf("El array, luego de aplicársele la función reverse, queda así:\n");
		lista_reverse(array);
		lista_showStdOut(array);

		/*destruye el array*/
		lista_destroy(array);
		
		
        /*pregunta si se desea finalizar la aplicacion o continuar*/
        printf("Si desea finalizar la aplicacion presione 's', o presione cualquier tecla para continuar:  ");
        scanf("%s",&t);
	    }
	  return 0;
}
